package com.xjk.excel;

import java.util.HashMap;
import java.util.Map;
import org.apache.poi.ss.usermodel.BorderStyle;

public enum BorderStyleEnum {

  /**
   * 无边框（默认）
   */
  NONE(0x0,"无边框"),

  /**
   * 细边框
   *
   * 使用细线条作为单元格的边框，适用于轻微的分隔或装饰。
   */
  THIN(0x1,"细边框"),

  /**
   * 中等边框
   *
   * 使用中等粗细的线条作为单元格的边框，相较于细边框，更加明显和突出。
   */
  MEDIUM(0x2,"中等边框"),

  /**
   * 虚线边框
   *
   * 使用由短划线组成的边框线条，适用于需要强调但不希望过于突出时使用。
   */
  DASHED(0x3,"虚线边框"),

  /**
   * 点线边框
   *
   * 使用由点状线条组成的边框，适用于需要细腻分隔效果的场景。
   */
  DOTTED(0x4,"点线边框"),

  /**
   * 粗边框
   *
   * 使用较粗的线条作为单元格的边框，适用于需要明显分隔的区域或标题。
   */
  THICK(0x5,"粗边框"),

  /**
   * 双线边框
   *
   * 使用两条平行线作为单元格的边框，提供更加丰富和正式的视觉效果。
   */
  DOUBLE(0x6,"双线边框"),

  /**
   * 发丝边框
   *
   * 使用极细的线条作为单元格的边框，适用于需要非常轻微分隔的场景。
   */
  HAIR(0x7,"发丝边框"),

  /**
   * 中等虚线边框
   *
   * 使用中等粗细的虚线作为单元格的边框，提供介于虚线和中等边框之间的视觉效果。
   */
  MEDIUM_DASHED(0x8,"中等虚线边框"),

  /**
   * 点划线边框
   *
   * 使用由短划线和点组成的交替图案作为单元格的边框，适用于需要复杂分隔效果的场景。
   */
  DASH_DOT(0x9,"点划线边框"),

  /**
   * 中等点划线边框
   *
   * 使用中等粗细的点划线组合作为单元格的边框，提供更加均衡和专业的视觉效果。
   */
  MEDIUM_DASH_DOT(0xA,"中等点划线边框"),

  /**
   * 点划点边框
   *
   * 使用由点、划线和点组成的边框样式，适用于需要高度装饰性和复杂分隔的场景。
   */
  DASH_DOT_DOT(0xB,"点划点边框"),

  /**
   * 中等点划点边框
   *
   * 使用中等粗细的点划点组合作为单元格的边框，提供既复杂又不失平衡的视觉效果。
   */
  MEDIUM_DASH_DOT_DOT(0xC,"中等点划点边框"),

  /**
   * 斜点划线边框
   *
   * 使用斜向的划线和点组成的边框样式，适用于需要动态和独特视觉效果的场景。
   */
  SLANTED_DASH_DOT(0xD,"斜点划线边框");

  private int code;
  private String type;

  BorderStyleEnum(int code, String type)  {
    this.code = code;
    this.type = type;
  }

  public static Map<BorderStyleEnum, BorderStyle> borderStyleMap = new HashMap<>();

  static {
    borderStyleMap.put(NONE, BorderStyle.NONE);
    borderStyleMap.put(THIN, BorderStyle.THIN);
    borderStyleMap.put(MEDIUM, BorderStyle.MEDIUM);
    borderStyleMap.put(DASHED, BorderStyle.DASHED);
    borderStyleMap.put(DOTTED, BorderStyle.DOTTED);
    borderStyleMap.put(THICK, BorderStyle.THICK);
    borderStyleMap.put(DOUBLE, BorderStyle.DOUBLE);
    borderStyleMap.put(HAIR, BorderStyle.HAIR);
    borderStyleMap.put(MEDIUM_DASHED, BorderStyle.MEDIUM_DASHED);
    borderStyleMap.put(DASH_DOT, BorderStyle.DASH_DOT);
    borderStyleMap.put(MEDIUM_DASH_DOT, BorderStyle.MEDIUM_DASH_DOT);
    borderStyleMap.put(DASH_DOT_DOT, BorderStyle.DASH_DOT_DOT);
    borderStyleMap.put(MEDIUM_DASH_DOT_DOT, BorderStyle.MEDIUM_DASH_DOT_DOT);
    borderStyleMap.put(SLANTED_DASH_DOT, BorderStyle.SLANTED_DASH_DOT);
  }


}
